你可以將每個 host 看作它持有與子 Fragment有關聯的FragmentManager
。圖1說明了這一點,以及在supportFragmentManager
、parentFragmentManager
、childFragmentManager
的屬性對應(property mappings)關係。
[圖1] 每個 host 持有與子 Fragment 有關聯的FragmentManager
。
引用適合的FragmentManager
屬性(property),取決於在哪個 Fragment 層級中調用,以及你想要存取哪個FragmentManager
。
當你引用了FragmentManager
,你可以透過它來操作要顯示給使用者的 Fragment。
一般而言,你的應用程式應該會由一個或少數的 Activity 組成,每個 Activity 呈現一組相關畫面。這個 Activity 可能會提供入口點[註1]來放置頂層(top-level)導航、定義ViewModels
和 Fragment 之間的視圖狀態(view-state)。應用程式中每個個別目的地(destination)都應該由一個 Fragment 呈現。
[註1]
還記得在 Day 01 提及的 Activity 定義嗎?
Activity 是作為應用程式與使用者互動的入口點。
如果你想要同時顯示多個 Fragment,像是分割視圖(split-view)或儀表版(dashboard),你應該使用目的地(destination) Fragment 和它的childFragmentManager
來管理子 Fragment。
子 Fragment 使用範例如下:
ViewPager2
的滑動畫面(Screen slides),在一個父級 Fragment 管理一系列子 Fragment 視圖。NavHostFragment
,並使用不同目的地子 Fragment 來填充。參考資料